package br.com.locanet.dao.database.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.PersistenceException;

import br.com.locanet.bean.impl.CopiaFilme;
import br.com.locanet.dao.GenericJPADAO;

public class CopiaFilmeDAO extends GenericJPADAO<CopiaFilme> {

	@Override
	protected Object[] doPrepareQuery(StringBuffer query, CopiaFilme entity) {
		List<Object> values = new ArrayList<Object>();
		
		for (Object obj : super.doPrepareQuery(query, entity)){
			values.add(obj);
		}
		
		if (entity.getId()!=null){
			query.append(" AND oEntidade.id = ? ");
			values.add(entity.getId());
		}
		if (entity.getCodigo()!=null){
			query.append(" AND oEntidade.codigo LIKE ? ");
			values.add("%"+entity.getCodigo()+"%");
		}
		if (entity.getFilme()!=null&&entity.getFilme().getId()!=null){
			query.append(" AND oEntidade.filme.id = ? ");
			values.add(entity.getFilme().getId());
		}
		if (entity.getStatus()!=null){
			query.append(" AND oEntidade.status = ? ");
			values.add(entity.getStatus());
		}
		
		return values.toArray();
	}
	
	@Override
	public CopiaFilme doMerge(CopiaFilme entity) throws PersistenceException {
		CopiaFilme oldEntity = findById(entity);
			
		if (entity.getFilme()!=null&&entity.getFilme().getId()!=null)
			oldEntity.setFilme(entity.getFilme());
		if (entity.getCodigo()!=null)
			oldEntity.setCodigo(entity.getCodigo());
		if (entity.getStatus()!=null)
			oldEntity.setStatus(entity.getStatus());
		
		return oldEntity;
	}
	
}
